/**
 * Multiworker 2000
 * @brief Classe de comunicação do sistema
 * @author André Luiz de Oliveira Vasconcelos
 * @file comunicacao.cpp
 * @date 2011
 */

#include "comunicacao.h"

/**
 * Construtor
 */
Comunicacao::Comunicacao() 
{
}

/**
 * Destrutor
 */
Comunicacao::~Comunicacao()
{
}

/**
 * contar
 * @brief Retorna a quantidade de mensagens
 * @author André Luiz Vasconcelos
 * @return int Quantidade de mensagens
 */
int Comunicacao::contar()
{
    return this->mensagens.count();
}

/**
 * removerTodasAsMensagens
 * @brief Remove todos as mensagens
 * @author André Luiz Vasconcelos
 */
void Comunicacao::removerTodasAsMensagens()
{
    this->mensagens.clear();
}

/**
 * removerMensagem
 * @brief Remove uma mensagem
 * @author André Luiz Vasconcelos
 * @param mensagem Número da mensagem
 */
void Comunicacao::removerMensagem( int mensagem )
{
    this->mensagens.remove( mensagem );
}

/**
 * marcarMensagemLida
 * @brief Marca mensagem como lida
 * @author André Luiz Vasconcelos
 * @param mensagem 
 */
void Comunicacao::marcarMensagemLida( int mensagem )
{
    this->mensagens[ mensagem ].marcarComoLida();
}

/**
 * marcarMensagemNaoLida
 * @brief Marca mensagem como não lida
 * @author André Luiz Vasconcelos
 * @param mensagem 
 */
void Comunicacao::marcarMensagemNaoLida( int mensagem )
{
    this->mensagens[ mensagem ].marcarComoNaoLida();
}

/**
 * incluirMensagem
 * @brief Inclui uma mensagem na lista de mensagens
 * @author André Luiz Vasconcelos
 * @param mensagem Mensagem a ser incluída
 */
void Comunicacao::incluirMensagem( Mensagem mensagem )
{
    this->mensagens.insert( this->contar() + 1, mensagem );
}

/**
 * getMensagem
 * @brief Retorna a mensagem correspondente ao número
 * @author André Luiz Vasconcelos
 * @param numero Número da mensagem
 * @return Mensagem
 */
Mensagem Comunicacao::getMensagem( int mensagem )
{
    return this->mensagens.value( mensagem );
}


